package com.nativetalk.dao;

import com.nativetalk.base.Page;
import com.nativetalk.bean.live.*;
import com.nativetalk.bean.live.his.TdNtLiveCourseHisMembList;
import com.nativetalk.bean.live.his.TdNtLiveCourseHisNewList;
import com.nativetalk.bean.live.his.TdNtLiveCourseHisTeacher;

import java.util.List;
import java.util.Map;

/**
 * Created by lizhun on 16/5/11.
 */
@MyBatisRepository
public interface TdNtLiveCourseHisDao {
    /**
     * @Purpose  添加直播课程(开课)
     * @version  2.1
     * @author   lizhun
     * @param    tdNtLiveCourseHisInsert
     * @return   void
     */
    public void insertTdNtLiveCourseHis(TdNtLiveCourseHisInsert tdNtLiveCourseHisInsert);
    /**
     * @Purpose  查找老师是否有时间冲突的直播
     * @version  2.1
     * @author   lizhun
     * @param    map
     * @return   TdNtLiveCourseHisDetail
     */
    public TdNtLiveCourseHisDetail findTdNtLiveCourseHisDetailConflict(Map<String, Object> map);
    /**
     * @Purpose  分页查找直播
     * @version  2.1
     * @author   lizhun
     * @param    page
     * @return   List<TdNtLiveCourseHisList>
     */
    public List<TdNtLiveCourseHisList> findTdNtLiveCourseHisList(Page page);
    /**
     * @Purpose  查找直播数量
     * @version  2.1
     * @author   lizhun
     * @param
     * @return   Integer
     */
    public Integer findTdNtLiveCourseHisListSize();
    /**
     * @Purpose  查找直播详情
     * @version  2.1
     * @author   lizhun
     * @param    live_cou_his_id
     * @return   TdNtLiveCourseHisDetails
     */
    public TdNtLiveCourseHisDetails findTdNtLiveCourseHisDetails(Integer live_cou_his_id);
    /**
     * @Purpose  分页根据老师id查找直播
     * @version  2.1
     * @author   lizhun
     * @param    page
     * @return   List<TdNtLiveCourseHisTeacherList>
     */
    public List<TdNtLiveCourseHisTeacherList> findTdNtLiveCourseHisTeacherList(Page page);
    /**
     * @Purpose  根据老师id查找直播数量
     * @version  2.1
     * @author   lizhun
     * @parampage
     * @return   Integer
     */
    public Integer findTdNtLiveCourseHisTeacherListSize(Page page);
    /**
     * @Purpose  更新直播课程够买人数
     * @version  2.1
     * @author   lizhun
     * @param    tdNtLiveCourseHisInsert
     * @return   void
     */
    public void updateTdNtLiveCourseHisSize(TdNtLiveCourseHisInsert tdNtLiveCourseHisInsert);
    /**
     * @Purpose  分页查找直播
     * @version  2.1
     * @author   lizhun
     * @param    page
     * @return   List<TdNtLiveCourseHisList>
     */
    public List<TdNtLiveCourseHisList> findTdNtLiveCourseHisByMembIdList(Page page);
    /**
     * @Purpose  查找直播数量
     * @version  2.1
     * @author   lizhun
     * @param
     * @return   Integer
     */
    public Integer findTdNtLiveCourseHisListByMembIdSize(Page page);

    /**
     * @Purpose  更新直播(开始直播)
     * @version  2.1
     * @author   lizhun
     * @param    tdNtLiveCourseHisUpdate
     * @return   void
     */
    public void updateTdNtLiveCourseHisStart(TdNtLiveCourseHisUpdate tdNtLiveCourseHisUpdate);
    /**
     * @Purpose  更新直播(结束直播)
     * @version  2.1
     * @author   lizhun
     * @param    tdNtLiveCourseHisUpdate
     * @return   void
     */
    public void updateTdNtLiveCourseHisEnd(TdNtLiveCourseHisUpdate tdNtLiveCourseHisUpdate);
    /**
     * @Purpose  首页查找直播
     * @version  2.1
     * @author   lizhun
     * @param
     * @return   List<TdNtLiveCourseHisList>
     */
    public List<TdNtLiveCourseHisList> findTdNtLiveCourseHisByMembIdListIndex();
    /**
     * @Purpose  查找直播送礼排行榜
     * @version  3.0
     * @author   lizhun
     * @param    page
     * @return   List<Map<String, Object>>
     */
    public List<Map<String, Object>> findTdNtLiveCourseHisRanding(Page page);
    /**
     * @Purpose  查找直播送礼排行榜
     * @version  3.0
     * @author   lizhun
     * @param    page
     * @return   Integer
     */
    public Integer findTdNtLiveCourseHisRandingSize(Page page);
    /**
     * @Purpose  查找用户购买的直播数量
     * @version  3.0
     * @author   lizhun
     * @param    page
     * @return   Integer
     */
    public Integer findTdNtLiveCourseHisByMembIdSize(Page page);
    /**
     * @Purpose  查找用户购买的直播分页
     * @version  3.0
     * @author   lizhun
     * @param    page
     * @return   List<TdNtLiveCourseHisList>
     */
    public List<TdNtLiveCourseHisList> findTdNtLiveCourseHisByMembIdPage(Page page);
    /**
     * @Purpose  查找用户购买的直播已完成数量
     * @version  3.0
     * @author   lizhun
     * @param    page
     * @return   Integer
     */
    public Integer findTdNtLiveCourseHisByMembIdFinishSize(Page page);
    /**
     * @Purpose  查找用户购买的直播已完成分页
     * @version  3.0
     * @author   lizhun
     * @param    page
     * @return   List<TdNtLiveCourseHisList>
     */
    public List<TdNtLiveCourseHisList> findTdNtLiveCourseHisByMembIdFinishPage(Page page);
    /**
     * @Purpose  首页查找直播
     * @version  3.2
     * @author   lizhun
     * @param
     * @return   List<TdNtLiveCourseHisIndex>
     */
    public List<TdNtLiveCourseHisIndex> findTdNtLiveCourseHisIndex();
    /**
     * @Purpose  教师详情页查找直播
     * @version  3.2
     * @author   lizhun
     * @param
     * @return   List<TdNtLiveCourseHisTeacher>
     */
    public List<TdNtLiveCourseHisTeacher> findTdNtLiveCourseHisTeacher(int tea_id);

    /**
     * @Purpose  查找教师直播未完成的数量
     * @version  3.2
     * @author   lizhun
     * @param    page
     * @return   Integer
     */
    public Integer findTdNtLiveCourseHisByTeaIdUnFinishSize(Page page);
    /**
     * @Purpose  分页查找教师未完成直播
     * @version  3.2
     * @author   lizhun
     * @param    page
     * @return   List<TdNtLiveCourseHisMembList>
     */
    public List<TdNtLiveCourseHisMembList> findTdNtLiveCourseHisByTeaIdUnFinishPage(Page page);
    /**
     * @Purpose  查找教师直播已完成的数量
     * @version  3.2
     * @author   lizhun
     * @param    page
     * @return   Integer
     */
    public Integer findTdNtLiveCourseHisByTeaIdFinishSize(Page page);
    /**
     * @Purpose  分页查找教师已完成直播
     * @version  3.2
     * @author   lizhun
     * @param    page
     * @return   List<TdNtLiveCourseHisMembList>
     */
    public List<TdNtLiveCourseHisMembList> findTdNtLiveCourseHisByTeaIdFinishPage(Page page);
    /**
     * @Purpose  查找直播点赞数量
     * @version  3.3
     * @author   lizhun
     * @param    live_cou_his_id
     * @return   Integer
     */
    public Integer findLivesLikes(int live_cou_his_id);
    /**
     * @Purpose  更新直播点赞数量
     * @version  3.3
     * @author   lizhun
     * @param    map
     * @return   void
     */
    public void updateLivesLikes(Map<String, Object> map);
    /**
     * @Purpose  更新直播评论数量
     * @version  3.3
     * @param    live_cou_his_id
     * @return   void
     */
    public void updateLivesCommentSize(int live_cou_his_id);


    /**
     * @Purpose  查找未完成直播(obj:1精选2全部3分类4最热5已购买)
     * @version  3.3
     * @author   lizhun
     * @param    page
     * @return   List<TdNtLiveCourseHisNewList>
     */
    public List<TdNtLiveCourseHisNewList> findTdNtLiveCourseHisNewListUnList(Page page);
    /**
     * @Purpose  查找未完成直播数量
     * @version  3.3
     * @author   lizhun
     * @param    page
     * @return   Integer
     */
    public Integer findTdNtLiveCourseHisNewListUnSize(Page page);

    /**
     * @Purpose  查找已完成直播(obj:1精选2全部3分类4最热5已购买)
     * @version  3.3
     * @author   lizhun
     * @param    page
     * @return   List<TdNtLiveCourseHisNewList>
     */
    public List<TdNtLiveCourseHisNewList> findTdNtLiveCourseHisNewListList(Page page);
    /**
     * @Purpose  查找已完成直播数量
     * @version  3.3
     * @author   lizhun
     * @param    page
     * @return   Integer
     */
    public Integer findTdNtLiveCourseHisNewListSize(Page page);

    /**
     * 查询直播累计时间
     * @param live_cou_id
     * @return
     */
    public Integer findLiveSumDuration(int live_cou_id);

    /**
     * 查询该直播最新一条直播结束的记录
     * @param live_cou_id
     * @return
     */
    public TdNtLiveCourseHisDetails findLastCourseHisDetails(int live_cou_id);

    /**
     * 直播课观看次数加1
     * @param live_cou_his_id
     */
    public void updateLiveCourseHisWatchSize(int live_cou_his_id);
}
